<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>复习class</h1>
    <script>
        // class类是构造函数的语法糖

        // 构造函数
        /* function Person(name,age){
            this.name = name;
            this.age = age;
        }
        let tom = new Person('tom',18);
        console.log(tom); */

        // 构造函数要使用class类写
        class Person{
            // 构造器
            // 在构造器当中添加属性和方法就能添加到实例对象上
            constructor(name,age,sex){
                this.name = name;
                this.age = age;
                this.sex = sex
            }
            // 就在原型对象上添加了属性和方法
            jump(){
                console.log('石松峰吃糖葫芦，一甜，跳了3米远！！');
            }
            // static标识添加的属性和方法，在构造函数（class类对象上进行添加）
            static run(){
                console.log('石松峰800米，2分钟40秒');
            }
            static color='yellow'
        }
        let tom = new Person('tom',12,'男');
        console.log(tom);

        // class类的继承 extends  super

        class Students extends Person{
            constructor(name,age,sex,hobby){
                super(name,age,sex);//super作为函数
                this.hobby = hobby
            }
            // 子类的原型对象上
            jump(){
                super.jump();//super作为对象继承了父类上的方法  原型对象上的方法继承父类原型对象上的方式
                // super.run();
            }
            static run(){
                super.run();//super继承 构造函数（class类本身的方法时），只能继承父类的构造函数（class本身上的方法）
            }
        }
        let leiyu = new Students('leiyu',18,'男','肤白貌美大长腿');
        console.log(leiyu);
        // jump为原型对象上的方法  它的实例都能根据隐式原型链访问到原型对象上的方法
        leiyu.jump();
        // 调用class类（构造函数自身的方法）
        Students.run();

    </script>
</body>
</html>